package com.xian.im.tcp.api;

import com.xian.im.common.proto.MsgMessage;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.Set;

/**
 * @program: gitee
 * @description: 群组API
 * @author: liru.xian
 * @create: 2021-08-27 23:52
 **/
@Api(tags = "用户channel API")
@RequestMapping("/tcp/channel/group")
public interface GroupChannelApi {

    /**
     * 群组推送消息 不包含自己
     * @param userId
     * @param groupId
     * @param message
     * @return
     */
    Boolean pushGroupMessage(String userId,String groupId, MsgMessage message);
    /**
     * 群组推送系统消息 不包含自己
     * @param userId
     * @param groupId
     * @param message
     * @return
     */
    Boolean pushGroupSystemMessage(String userId,String groupId, MsgMessage message);
    /**
     * 群组推送消息
     * @param groupId
     * @param message
     * @return
     */
    Boolean pushGroupMessage(String groupId, MsgMessage message);
    /**
     * 群组推送系统消息
     * @param groupId
     * @param message
     * @return
     */
    Boolean pushGroupSystemMessage(String groupId, MsgMessage message);



    /**
     *  创建群组
     * @return
     */
    Boolean createGroup(String groupId,MsgMessage message);

    /**
     *  修改群组
     * @return
     */
    Boolean updateGroup(String groupId,MsgMessage message);

    /**
     *  删除群组 By uniqId
     * @return
     */
    Boolean delGroupByUniqId(String uniqId);
    /**
     *  删除群组 By uniqId
     * @return
     */
    Boolean delGroupByUniqId(String uniqId,Long orgId);

    /**
     *  修改群主
     *
     *  @param uniqId 群组IM 账号
     * @return
     */
    Boolean updateGroupOwner(String ownerAccount,String uniqId);

    /**
     *  修改群主
     *
     *  @param uniqId 群组IM 账号
     * @return
     */
    Boolean updateGroupOwner(String ownerAccount,String uniqId,Long orgId);

    /**
     *  全体禁言
     *  @param uniqId 群组IM 账号
     * @return
     */
    Boolean shutUp(String uniqId);

    /**
     *  全体禁言
     *  @param uniqId 群组IM 账号
     * @return
     */
    Boolean shutUp(String uniqId,Long orgId);

    /**
     *  解除禁言
     * @param uniqId 群组IM 账号
     * @return
     */
    Boolean unmute(String uniqId);

    /**
     *  解除禁言
     * @param uniqId 群组IM 账号
     * @return
     */
    Boolean unmute(String uniqId,Long orgId);

    /**
     * 获取所有在线的连接
     * @return
     */
    Set<String> getAllOnlineChannel();

    /**
     * 获取群组所有在线的连接
     * @return
     */
    Set<String> getAllOnlineChannel(String groupId);

    /**
     * 踢出群组
     * @param ctxId
     * @param groupId
     * @return
     */
    Boolean kick(String ctxId,String groupId);

    /**
     * 退出群组
     * @param ctxId
     * @param groupId
     * @return
     */
    Boolean quit(String ctxId,String groupId);

    /**
     * 多端踢出群组
     * @param userId
     * @param groupId
     * @return
     */
    Boolean kickUser(String userId,String groupId);
}
